#!/usr/bin/env python3
"""
知识库构建脚本
用于构建和更新向量知识库
"""

import os
import sys
import argparse
import logging
from pathlib import Path

# 添加项目根目录到 Python 路径
project_root = Path(__file__).parent.parent
sys.path.insert(0, str(project_root))

from src.data_processing.vector_store_builder import VectorStoreBuilder
from src.models.llm_config import LLMConfig
from src.utils.logger import setup_logger

logger = setup_logger(__name__)


def main():
    """主函数"""
    parser = argparse.ArgumentParser(description="构建向量知识库")
    parser.add_argument(
        "--data-dir", 
        type=str, 
        default="data",
        help="数据目录路径 (默认: data)"
    )
    parser.add_argument(
        "--force-rebuild", 
        action="store_true",
        help="强制重建知识库（清空现有数据）"
    )
    parser.add_argument(
        "--config-file",
        type=str,
        help="配置文件路径"
    )
    
    args = parser.parse_args()
    
    try:
        # 加载配置
        config = LLMConfig()
        
        # 验证配置
        if not config.validate():
            logger.error("配置验证失败")
            sys.exit(1)
        
        logger.info(f"使用配置: {config}")
        
        # 检查数据目录
        data_dir = Path(args.data_dir)
        if not data_dir.exists():
            logger.error(f"数据目录不存在: {data_dir}")
            sys.exit(1)
        
        # 创建向量存储构建器
        builder = VectorStoreBuilder(config)
        
        # 构建向量存储
        logger.info("开始构建向量存储...")
        builder.build_vector_store(
            data_dir=str(data_dir),
            force_rebuild=args.force_rebuild
        )
        
        logger.info("向量存储构建完成！")
        
    except Exception as e:
        logger.error(f"构建向量存储时发生错误: {e}")
        sys.exit(1)


if __name__ == "__main__":
    main()
